﻿using System;

/// <summary>
/// Summary description for MySessionBasePage
/// </summary>
/// 
namespace CE.Global
{
    public class MyLanguageAndSessionBasePage : System.Web.UI.Page
    {
        protected override void InitializeCulture()
        {
            if (Request.Params["lang"] != null)
            {
                if (Request.Params["lang"].ToString() == "th-TH")
                {
                    Session["Language"] = "th-TH";

                    //Response.Redirect("~/th/car-insurance/default.aspx?test=1");
                    //Page.Theme = "TH";
                }
                else
                {
                    Session["Language"] = "en-US";
                    //Response.Redirect("~/en/car-insurance/default.aspx?test=1");
                    //Page.Theme = "EN";
                }
                Culture = CE.Global.General.SetCulture();
                base.InitializeCulture();
            }

            //String selectedCulture = CE.Global.General.SetCulture();
            ////UICulture = selectedCulture;
            //Culture = selectedCulture;
            //base.InitializeCulture();
        }

        public MyLanguageAndSessionBasePage()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        override protected void OnInit(EventArgs e)
        {
            base.OnInit(e);


            //It appears from testing that the Request and Response both share the 
            // same cookie collection.  If I set a cookie myself in the Reponse, it is 
            // also immediately visible to the Request collection.  This just means that 
            // since the ASP.Net_SessionID is set in the Session HTTPModule (which 
            // has already run), thatwe can't use our own code to see if the cookie was 
            // actually sent by the agent with the request using the collection. Check if 
            // the given page supports session or not (this tested as reliable indicator 
            // if EnableSessionState is true), should not care about a page that does 
            // not need session
            if (Context.Session != null)
            {
                //Tested and the IsNewSession is more advanced then simply checking if 
                // a cookie is present, it does take into account a session timeout, because 
                // I tested a timeout and it did show as a new session
                if (Session.IsNewSession)
                {
                    // If it says it is a new session, but an existing cookie exists, then it must 
                    // have timed out (can't use the cookie collection because even on first 
                    // request it already contains the cookie (request and response
                    // seem to share the collection)
                    string szCookieHeader = Request.Headers["Cookie"];
                    if ((null != szCookieHeader) && (szCookieHeader.IndexOf("ASP.NET_SessionId") >= 0))
                    {
                        //Response.Redirect("~/user/usermessage.aspx?ErrorCode=101");
                        Response.Redirect("~/car-insurance/car-details.aspx");
                    }
                }
            }
        }
    }
}